package com.handsome.单例模式;

/**
 * 懒加载（静态内部类）
 * 1.这种方式采用了类装载的机制来保证初始化实例时只有一个线程
 * 2.静态内部类方式在SingletonLazyTest04类被装载时InstanceSingleton类并不会立即实例化，而是在调用getInstance方法时才会装载InstanceSingleton类
 * 3.类的静态属性只会在第一次加载类的时候初始化，在这里线程是安全的，jvm帮助我们保证了线程的安全性，因为在类的初始化过程中，别的线程是无法进入的
 * 优点：解决了线程安全的问题，利用静态内部类特点实现延迟加载，效率高
 * 结论：推荐使用
 * @author niechun
 * @date 2023/1/7 22:00
 */
public class SingletonLazy04 {
}
class SingletonLazyTest04 {
    //私有化构造方法
    private SingletonLazyTest04() {
    }

    private static class InstanceSingleton{
        private final static  SingletonLazyTest04 instance=new SingletonLazyTest04();
    };

    //提供一个共有的静态方法返回对象实例

    public static synchronized SingletonLazyTest04 getInstance() {
      return InstanceSingleton.instance;
    }

}
